/*--------------------------------------------------------------------------
  Project::MONDIALI SCI ALPINISMO
  Package::State
  Class::State
  File State.h
  --------------------------------------------------------------------------
  * METHODS AND CLASS PARAMETERS


  --------------------------------------------------------------------------
  * FUNCTIONS DESCRIPTION
  
	...

  --------------------------------------------------------------------------
  * COPYRIGHT

  --------------------------------------------------------------------------
  * INFO ABOUT AUTHOR AND VERSIONS
  Author:	Tino Giorgio	Data: 
  Rev1:			Data:

  --------------------------------------------------------------------------
  * E-MAIL & CONTACTS

  GIORGIO TINO:	tinoshi@libero.it
	           	shapeofangels@hotmail.com
	            giorgio.tino@studenti.polito.it

  --------------------------------------------------------------------------*/

#if !defined(STATE_H)
#define STATE_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "ui.h"

class State : public uiSceneDelegate
{
public:
	State();
	State(State* oldState);
	virtual ~State();
	
	// class 'callbacks' (they aren't callbacks really...)
	virtual void load(const char* filename) = 0;
    virtual void display(void) = 0;
    virtual void resize(int w, int h) = 0;
    virtual void keyUp(unsigned char key, int x, int y) = 0;
    virtual void keyDown(unsigned char key, int x, int y) = 0;
    virtual void specialUp(int key, int x, int y) = 0;
    virtual void specialDown(int key, int x, int y) = 0;
    virtual void motion(int newx, int newy) = 0; 
    virtual void passive(int newx, int newy) = 0;
    virtual void mouse(int button, int state, int mouseX, int mouseY) = 0;
    virtual State* idle(void) = 0;  
    
    State* oldState;
	
	// uiSceneDelegate
	virtual void onCallback(const uiScene* scene, const uiView* view, const char* name, puObject* object);
	virtual void onActiveCallback(const uiScene* scene, const uiView* view, const char* name, puObject* object);
	virtual void onDownCallback(const uiScene* scene, const uiView* view, const char* name, puObject* object);
    
protected:
    uiScene *scene;
};
#endif // !defined(STATE_H_)
